#pragma once
#include "basegameentity.h"
#include "statemachine.h"


enum Locations
{
	Shack,
	GoldMine,
	Bank,
	Bar
};

class Miner :
	public BaseGameEntity
{
private:
	StateMachine<Miner>* m_pStateMachine;

	Locations m_Location;

	int m_iGoldCarried;

	int m_iMoneyInBank;

	int m_iThirst;

	int m_iTargetAmount;

public:
	Miner(int id);

	virtual ~Miner(void);

	virtual void Update(void);

	Locations Location(void) const { return m_Location; }
	Locations ChangeLocation(Locations location);
	void AddToGoldCarried(int val);
	void IncreaseFatigue(void);
	bool PocketsFull(void);
	bool Thirsty(void);

	StateMachine<Miner>* GetFSM() { return m_pStateMachine; }
	void Sleep(void);
	void DepositGold(void);
	void SetTargetAmount(void);
	bool Reached(void);
	void Drink(void);
};
